# 创建索引库
from haystack import indexes

from goods.models import SKU


class SKUIndex(indexes.SearchIndex, indexes.Indexable):
    """
    SKU索引类　　商品索引类，针对商品数据生成索引
        {{ object.name }}
        {{ object.caption }}
        {{ object.id }
    """

    # ｔｅｘｔ是固定的  搜索字段就是这里　指向的是模板字段
    # ｔｅｘｔ里边包含的索引库表的所有字段　当搜索时使用的是这个字段，并且
    # 我们搜索时的关键字只能根据sku_text模板文本内包含的字段去搜索　有就返回数据显示能返回所有
    text = indexes.CharField(document=True, use_template=True)

    # 保存在索引库中的字段
    id = indexes.IntegerField(model_attr='id') # 主键
    name = indexes.CharField(model_attr='name')
    price = indexes.DecimalField(model_attr='price')
    # 索引表的字段创建都是根据商品模型表创建的　
    # 商品图片　model_attr='default_image_url'关联的模型属性
    default_image_url = indexes.CharField(model_attr='default_image_url')
    comments = indexes.IntegerField(model_attr='comments')

    def get_model(self):
        """返回建立索引的模型类 针对商商品创建索引（关联的模型）"""
        return SKU

    def index_queryset(self, using=None):
        """返回要建立索引的数据查询集"""
        return self.get_model().objects.filter(is_launched=True) # 针对上架商商品创建索引